﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.IO;
using System.Runtime.InteropServices;

namespace ParkingLot.Utility
{
   

   
       public class IniFileHelp
        {
            public string inipath;

            //声明API函数

            [DllImport("kernel32")]
            private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
            [DllImport("kernel32")]
            private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
            /// <summary> 
            /// 构造方法 
            /// </summary> 
            /// <param name="INIPath">文件路径</param> 
            public IniFileHelp(string INIPath)
            {
                inipath = INIPath;
            }

            public IniFileHelp() { }

            /// <summary> 
            /// 写入INI文件 
            /// </summary> 
            /// <param name="Section">项目名称(如 [TypeName] )</param> 
            /// <param name="Key">键</param> 
            /// <param name="Value">值</param> 
            public void IniWriteValue(string Section, string Key, string Value)
            {
                if (string.IsNullOrEmpty(Section))
                {
                    throw new ArgumentException("必须指定节点名称", "Section");
                }
                if (string.IsNullOrEmpty(Key))
                {
                    throw new ArgumentException("必须指定键名称", "Key");
                }
                if (Value == null)
                {
                    throw new ArgumentException("值不能为null", "Value");
                }

                WritePrivateProfileString(Section, Key, Value, this.inipath);
            }
            /// <summary> 
            /// 读出INI文件 
            /// </summary> 
            /// <param name="Section">项目名称(如 [TypeName] )</param> 
            /// <param name="Key">键</param> 
            public void IniReadValue(string Section, string Key, ref string Value)
            {
                StringBuilder temp = new StringBuilder(500);
                if (string.IsNullOrEmpty(Section))
                {
                    throw new ArgumentException("必须指定节点名称", "Section");
                }
                if (string.IsNullOrEmpty(Key))
                {
                    throw new ArgumentException("必须指定键名称", "Key");
                }

                int i = GetPrivateProfileString(Section, Key, "", temp, 500, this.inipath);
                if (i != 0)
                {
                    Value = temp.ToString();
                }
                temp = null;
            }


            /// <summary> 
            /// 验证文件是否存在 
            /// </summary> 
            /// <returns>布尔值</returns> 
            public bool ExistINIFile()
            {
                return File.Exists(inipath);
            }
        }
}
